package com.jcn.seckill.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;

import com.jcn.seckill.access.UserContext;
import com.jcn.seckill.domain.MiaoshaUser;
import com.jcn.seckill.service.MiaoshaUserService;
//将自动注册到Spring容器，不需要再在applicationContext.xml文件定义bean了
@Service
public class UserArgumentResolver implements HandlerMethodArgumentResolver {

	//对类成员变量、方法及构造函数进行标注，完成自动装配的工作
	//@Autowired标注可以放在成员变量上，也可以放在成员变量的set方法上，也可以放在任意方法上表示
	@Autowired
	//注入服务  
	MiaoshaUserService userService;	
	
	public boolean supportsParameter(MethodParameter parameter) {
		//获取参数类型
		Class<?> clazz = parameter.getParameterType();
		//如果类型是MiaoshaUser则进行处理
		return clazz==MiaoshaUser.class;
	}

	public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
			NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
		//截取
		return UserContext.getUser();
	}

}
